欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

MySQL操作

1.1.2 text與blob
一些注意事項:

1)執行大量的刪除或更新操作,刪除數據后會產生很大的“空洞”,為提升性能,需定期使用OPTIMIZE TABLE進行碎片整理

2)使用合成的索引,可根據其他列的內容建立散列值,并單獨存放在數據列中,僅用于精確匹配的查詢,可用MD5函數生成散列值,或者SHA1或CRC32,注意尾部帶有空格生成算法的不能存儲在CHAR或VARCAHR列中,會受到尾部去除的影響

3)避免檢索大量的blob和text值,減少在網絡上傳輸大量的數據

4)把blob與text分離到單表,可將原表的數據列轉換成定長的數據行格式,減少主表的碎片,獲得性能優勢

1.1.3 浮點數與定點數
浮點數:float、double

定點數:decimal

注:

1、浮點數會存在誤差問題

2、貨幣等敏感數據應使用定點數存儲

3、避免使用浮點數進行比較

4、注意浮點數一些特殊值的處理

1.2 字符集
1.2.1 支持的字符集
MySQL支持多種字符集,可在同一臺服務器、同一個數據庫,甚至同一個表的不同字段指定不同的字符集,有較強的靈活性

MySQL字符集包括了字符集(CHARACTER)和校對規則(COLLATION)兩個概念,字符集定義存儲字符串的方式,校對規則定義比較字符串的方式,字符集和校對規則是一對多的關系

1.2.2 Unicode規范
Unicode是一種編碼規范,類似ASCII碼,由國際組織設計,可容納全世界所有語言文字的編碼方案,Unicode有兩套標準,UCS-2和USC-4,前者2個字節表示一個字符,后者4個字節表示一個字符

1.2.3 字符集設置
可以在 my.cnf 中設置:
[mysqld]
default-character-set=utf8
或者在啟動選項中指定:
mysqld --default-character-set=utf8
或者在編譯的時候指定:
./configure --with-charset=utf8

不設置默認會使用latin1作為服務器字符集,不指定校對規則會使用默認的校對規則

字符集的校對規則以字符集名稱開頭,以_ci(不區分大小寫)_cs(區分大小寫)或_bin(二進制文件)結尾

2 數據庫DDL操作
DDL(Data Definition Language):數據定義語言DDL用來創建數據庫中的各種對象——-表、視圖、索引、同義詞、聚簇等。關鍵字主要包括CREATE、DROP、ALTER(/VIEW/INDEX/SYN/CLUSTER)等。
DDL操作是隱性提交的,不能rollback

2.1 庫相關
2.1.1 建庫
mysql> CREATE DATABASE IF NOT EXISTS TEST DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;
1
2.1.2 刪除庫
mysql> DROP DATABASE IF EXISTS TEST;
1
2.2 表相關
2.2.1 表創建
mysql> CREATE TABLE IF NOT EXISTS `tb`(
? ?`runoob_id` INT UNSIGNED AUTO_INCREMENT,
? ?`runoob_title` VARCHAR(100) NOT NULL,
? ?`runoob_author` VARCHAR(40) NOT NULL,
? ?`submission_date` DATE,
? ?PRIMARY KEY ( `runoob_id` )

2.2.2 表修改
修改表名
mysql> ALTER TABLE tb RENAME tb_new;

增加字段
mysql> ALTER TABLE tb ADD (additional VARCHAR(50) NOT NULL DEFAULT 'NO');

修改字段數據類型
mysql> ALTER TABLE tb MODIFY additional VARCHAR(50) NOT NULL DEFAULT 'NO';

修改字段名稱
mysql> ALTER TABLE tb CHANGE old new VARCHAR(50) NOT NULL DEFAULT 'NO';

修改字段注釋
mysql> ALTER TABLE tb MODIFY COLUMN new VARCHAR(50) COMMENT '這是注釋';

2.2.3 表刪除
mysql> DROP TABLE IF EXISTS tb;
1
2.3 視圖相關
2.3.1 視圖創建
mysql> create [algorithm = {undefined | merge | temptable}]?
? ? view 視圖名 [{屬性清單}]
? ? as select 語句
? ? [with [cascaded|local] check option];
? ? -- algorithm:選擇的算法
? ? -- with check option:表示更新視圖時要保證在該視圖的權限范圍之內
? ? -- undfined:表示MySQL自動選擇所需使用的算法
? ? -- merge:表示將視圖的語句與視圖的定義合并,使得視圖定義的某一部分取代語句的對應部分(查詢的時候把視圖轉換為語句合并到查詢語句中去)
? ? -- temptable:將視圖的結果存入臨時表(將視圖轉換為子查詢,當做臨時表來查)
? ? -- cascaded:表示更新視圖時要滿足所有相關視圖和表的條件
? ? -- local:表示更新視圖時,要滿足該視圖本身的定義的條件即可

2.3.2 視圖修改
通過create or replace view修改,無則創建,有則修改

可通過alter修改,僅修改

mysql> alter view view1
? ? ? ? as select name
? ? ? ? from department

2.3.3 視圖刪除
mysql> drop view [if exists] view1;
1
3 表碎片整理
3.1 簡介
InnoDB表數據存儲在頁中,每個頁存放多條記錄,這些記錄以樹形結構組織,稱為B+樹

聚集索引的葉子節點包含行中所有字段的值,輔助索引的葉子節點包含索引列和主鍵列

在InnoDB中,刪除行行為只是被標記成已刪除,MySQL會通過Purge線程異步清理未用的索引鍵與行,但不會把釋放出來的空間繼續交由操作系統分配,導致頁面存在很多空洞

刪除數據會導致頁page出現空白空間,大量隨機的Delete操作必然在數據文件中造成不連續的空白空間,插入數據時,空白空間會被利用起來,造成了數據物理存儲順序與邏輯順序不同,稱之數據碎片

3.2 查看
使用show table status like '表名';,查看表的使用狀態

?

數據總大小 = data_length + index_length

實際表空間文件大小 = rows * avg_row_length

碎片大小 = (數據總大小 — 實際表空間文件大小 )/1024/1024 = xxx MB

3.3 整理
存儲引擎:

InnoDB:

mysql> ALTER TABLE table_name ENGINE = Innodb;
1
InnoDB還會將數據緩存到InnoDB緩存中,為保證預期,需釋放系統緩存

[root@db-test ~]# echo 3 > /proc/sys/vm/drop_caches
1
MyISAM:

mysql> OPTIMIZE TABLE table_name;
1
注:

MySQL官方建議不要經常(每小時或每天)進行碎片整理,一般根據實際情況,只需要每周或者每月整理一次即可
在OPTIMIZE TABLE運行過程中,MySQL會鎖定表
4 表統計信息
4.1 數據表狀態查看
使用show table status like '表名'\G

*************************** 1. row ***************************
? ? ? ? ? ?Name: tt
? ? ? ? ?Engine: InnoDB
? ? ? ? Version: 10
? ? ?Row_format: Dynamic
? ? ? ? ? ?Rows: 2
?Avg_row_length: 8192
? ? Data_length: 16384
Max_data_length: 0
? ?Index_length: 0
? ? ? Data_free: 0
?Auto_increment: NULL
? ? Create_time: 2022-05-05 21:37:32
? ? Update_time: NULL
? ? ?Check_time: NULL
? ? ? Collation: utf8mb4_general_ci
? ? ? ?Checksum: NULL
?Create_options:?
? ? ? ? Comment:?
1 row in set (0.00 sec)4.2 數據庫使用情況
mysql> SELECT?
TABLE_SCHEMA AS database_name,
SUM(ROUND((DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024.0/1024, 2)) AS Total_MB
FROM information_schema.`TABLES` AS T1
WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema','sys')
GROUP BY T1.`TABLE_SCHEMA`
ORDER BY SUM(ROUND((DATA_LENGTH+INDEX_LENGTH+DATA_FREE)/1024.0/1024, 2)) DESC
LIMIT 10;

+---------------+----------+
| database_name | Total_MB |
+---------------+----------+
| db ? ? ? ? ? ?| ? ? 0.07 |
| sys ? ? ? ? ? | ? ? 0.02 |
| testdb ? ? ? ?| ? ? NULL |
+---------------+----------+
3 rows in set, 1 warning (0.32 sec)

4.3 查詢InnoDB存儲引擎表
mysql> SELECT?
TABLE_SCHEMA AS database_name,
TABLE_NAME AS table_name,
TABLE_ROWS AS table_rows,
ENGINE AS table_engine,
ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
FROM information_schema.`TABLES` AS T1
WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema','sys')
AND T1.`ENGINE` IN ('innodb'); #可調整參數

12
+---------------+------------+------------+--------------+---------+----------+----------+---------+
| database_name | table_name | table_rows | table_engine | Data_MB | Index_MB | Total_MB | Free_MB |
+---------------+------------+------------+--------------+---------+----------+----------+---------+
| db ? ? ? ? ? ?| tt ? ? ? ? | ? ? ? ? ?2 | InnoDB ? ? ? | ? ?0.02 | ? ? 0.00 | ? ? 0.02 | ? ?0.00 |
| db ? ? ? ? ? ?| ty ? ? ? ? | ? ? ? ? ?3 | InnoDB ? ? ? | ? ?0.03 | ? ? 0.00 | ? ? 0.03 | ? ?0.00 |
| db ? ? ? ? ? ?| yy ? ? ? ? | ? ? ? ? ?0 | InnoDB ? ? ? | ? ?0.02 | ? ? 0.00 | ? ? 0.02 | ? ?0.00 |
+---------------+------------+------------+--------------+---------+----------+----------+---------+
3 rows in set, 1 warning (0.01 sec)

4.4 查看較大的表
#查看數據表較大的表
mysql> SELECT?
TABLE_SCHEMA AS database_name,
TABLE_NAME AS table_name,
TABLE_ROWS AS table_rows,
ENGINE AS table_engine,
ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
FROM information_schema.`TABLES` AS T1
WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema','sys')
ORDER BY T1.`TABLE_ROWS` DESC
LIMIT 10;

#查看數據表空間較大的表
mysql> SELECT?
TABLE_SCHEMA AS database_name,
TABLE_NAME AS table_name,
TABLE_ROWS AS table_rows,
ENGINE AS table_engine,
ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
FROM information_schema.`TABLES` AS T1
WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema','sys')
ORDER BY
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)
DESC LIMIT 10;

+---------------+-------------+------------+--------------+---------+----------+----------+---------+
| database_name | table_name ?| table_rows | table_engine | Data_MB | Index_MB | Total_MB | Free_MB |
+---------------+-------------+------------+--------------+---------+----------+----------+---------+
| db ? ? ? ? ? ?| ty ? ? ? ? ?| ? ? ? ? ?3 | InnoDB ? ? ? | ? ?0.03 | ? ? 0.00 | ? ? 0.03 | ? ?0.00 |
| db ? ? ? ? ? ?| tt ? ? ? ? ?| ? ? ? ? ?2 | InnoDB ? ? ? | ? ?0.02 | ? ? 0.00 | ? ? 0.02 | ? ?0.00 |
| db ? ? ? ? ? ?| yy ? ? ? ? ?| ? ? ? ? ?0 | InnoDB ? ? ? | ? ?0.02 | ? ? 0.00 | ? ? 0.02 | ? ?0.00 |
+---------------+-------------+------------+--------------+---------+----------+----------+---------+
10 rows in set, 1 warning (0.02 sec)

+---------------+-------------+------------+--------------+---------+----------+----------+---------+
| database_name | table_name ?| table_rows | table_engine | Data_MB | Index_MB | Total_MB | Free_MB |
+---------------+-------------+------------+--------------+---------+----------+----------+---------+
| db ? ? ? ? ? ?| ty ? ? ? ? ?| ? ? ? ? ?3 | InnoDB ? ? ? | ? ?0.03 | ? ? 0.00 | ? ? 0.03 | ? ?0.00 |
| db ? ? ? ? ? ?| tt ? ? ? ? ?| ? ? ? ? ?2 | InnoDB ? ? ? | ? ?0.02 | ? ? 0.00 | ? ? 0.02 | ? ?0.00 |
| db ? ? ? ? ? ?| yy ? ? ? ? ?| ? ? ? ? ?0 | InnoDB ? ? ? | ? ?0.02 | ? ? 0.00 | ? ? 0.02 | ? ?0.00 |
+---------------+-------------+------------+--------------+---------+----------+----------+---------+
10 rows in set, 1 warning (0.02 sec)

4.5 查看碎片較多的表
mysql> SELECT?
TABLE_SCHEMA AS database_name,
TABLE_NAME AS table_name,
TABLE_ROWS AS table_rows,
ENGINE AS table_engine,
ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB,
ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2)AS Free_Percent
FROM information_schema.`TABLES` AS T1
WHERE T1.`TABLE_SCHEMA` NOT IN('performance_schema','mysql','information_schema',)
AND ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2) >10
AND ROUND((DATA_FREE)/1024.0/1024, 2)>100
ORDER BY ROUND(ROUND((DATA_FREE)/1024.0/1024, 2) /ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2)*100,2) DESC
LIMIT 10;

4.6 查看表當前自增值
mysql> SELECT?
T2.TABLE_SCHEMA,
T2.TABLE_NAME,?
T1.COLUMN_NAME,
T1.COLUMN_TYPE,
T2.AUTO_INCREMENT
FROM information_schema.columns AS T1
INNER JOIN information_schema.tables AS T2
ON T1.TABLE_SCHEMA=T2.TABLE_SCHEMA
AND T1.TABLE_NAME=T2.TABLE_NAME
WHERE T1.EXTRA='auto_increment'
AND T1.DATA_TYPE NOT LIKE '%bigint%'
ORDER BY T2.AUTO_INCREMENT DESC
LIMIT 100;

14
4.7 查看無主鍵的表
mysql> SELECT
TABLE_SCHEMA AS database_name,
TABLE_NAME AS table_name,
TABLE_ROWS AS table_rows,
ENGINE AS table_engine,
ROUND((DATA_LENGTH)/1024.0/1024, 2) AS Data_MB,
ROUND((INDEX_LENGTH)/1024.0/1024, 2) AS Index_MB,
ROUND((DATA_LENGTH+INDEX_LENGTH)/1024.0/1024, 2) AS Total_MB,
ROUND((DATA_FREE)/1024.0/1024, 2) AS Free_MB
FROM information_schema.tables
WHERE (table_schema, table_name) NOT IN (
SELECT DISTINCT table_schema, table_name
FROM information_schema.columns
WHERE COLUMN_KEY = 'PRI'
)
AND table_schema NOT IN ('sys', 'mysql', 'information_schema', 'performance_schema');

?

文章鏈接: http://www.qzkangyuan.com/15546.html

文章標題:MySQL操作

文章版權:夢飛科技所發布的內容,部分為原創文章,轉載請注明來源,網絡轉載文章如有侵權請聯系我們!

聲明:本站所有文章,如無特殊說明或標注,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。

給TA打賞
共{{data.count}}人
人已打賞
云虛擬主機投稿分享

云服務器有多便捷

2023-1-10 14:06:29

建站教程投稿分享

Linux集群之LB

2023-1-10 16:18:45

0 條回復 A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 万山特区| 临沂市| 博湖县| 赣榆县| 隆德县| 兖州市| 普兰店市| 肥东县| 衡山县| 资中县| 阿克陶县| 鹤壁市| 南昌县| 三门县| 马鞍山市| 绥滨县| 剑川县| 新兴县| 洪泽县| 文昌市| 磐安县| 额敏县| 木兰县| 宁津县| 荃湾区| 三门县| 普洱| 白沙| 彭泽县| 青阳县| 永济市| 友谊县| 出国| 长汀县| 齐河县| 海盐县| 尚义县| 皮山县| 财经| 博乐市| 宁阳县|